<?php
// 开启会话
session_start();

// 创建图像
$imageWidth = 80;
$imageHeight = 40;
$image = imagecreatetruecolor($imageWidth, $imageHeight);

// 设置背景颜色和文本颜色
$backgroundColor = imagecolorallocate($image, 255, 255, 255);
$textColor = imagecolorallocate($image, 0, 0, 0);

// 填充背景
imagefill($image, 0, 0, $backgroundColor);

// 添加干扰线
for ($i = 0; $i < 5; $i++) {
    $lineColor = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
    imageline($image, rand(0, $imageWidth), rand(0, $imageHeight), rand(0, $imageWidth), rand(0, $imageHeight), $lineColor);
}

// 添加干扰点
for ($i = 0; $i < 100; $i++) {
    $pixelColor = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
    imagesetpixel($image, rand(0, $imageWidth), rand(0, $imageHeight), $pixelColor);
}


// 生成随机字符串作为验证码
    $content = '123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ';
    $code = '';
    for ($i = 0; $i < 4; $i++) {
        //字体大小
        $fontsize = 20;
        //字体颜色
        $fontcolor = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
        //设置字体内容
        $fontcontent = substr($content, mt_rand(0, strlen($content)), 1);
        $code.= $fontcontent;
        //显示的坐标
//        $x = ($i * 100 / 4) + mt_rand(5, 10);
//        $y = mt_rand(5, 10);
        $x = $i*($imageWidth/4) + mt_rand(5, 10);
        $y = ($imageHeight/4) + mt_rand(5, 10);
        //填充内容到画布中
        imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
    }


// 生成验证码并存储在会话中
$_SESSION['captcha'] = $code;

// 设置图像类型为 PNG
header('content-type: image/png');

// 输出图像
imagepng($image);

// 释放图像内存
imagedestroy($image);